#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main() {
    printf("=== 测试open函数hook ===\n");
    
    // 测试1：打开一个存在的文件
    printf("\n1. 测试打开存在的文件:\n");
    int fd1 = open("/etc/passwd", O_RDONLY);
    if (fd1 >= 0) {
        printf("成功打开 /etc/passwd，文件描述符: %d\n", fd1);
        close(fd1);
    } else {
        perror("打开 /etc/passwd 失败");
    }
    
    // 测试2：尝试打开不存在的文件
    printf("\n2. 测试打开不存在的文件:\n");
    int fd2 = open("/tmp/nonexistent_file_test", O_RDONLY);
    if (fd2 >= 0) {
        printf("意外成功打开不存在的文件，文件描述符: %d\n", fd2);
        close(fd2);
    } else {
        perror("打开不存在的文件失败（这是预期的）");
    }
    
    // 测试3：创建新文件
    printf("\n3. 测试创建新文件:\n");
    int fd3 = open("/tmp/test_hook_file", O_CREAT | O_WRONLY, 0644);
    if (fd3 >= 0) {
        printf("成功创建文件 /tmp/test_hook_file，文件描述符: %d\n", fd3);
        write(fd3, "Hello from hook test!\n", 22);
        close(fd3);
    } else {
        perror("创建文件失败");
    }
    
    printf("\n=== 测试完成 ===\n");
    return 0;
} 